#include "Mythread.h"
#include <QMutex>
#include <QWaitCondition>
#include <QTime>

QMutex gMutex;
QWaitCondition gNewdataAvailable;
int gSeq=0; //序号
int gDiceValue;

void ThreadProducer::run()
{
    m_stop=false;
    gSeq=0;
    qsrand(QTime::currentTime().msec()) ;//随机数初始化

    while(!m_stop) //循环主体
    {
        gMutex.lock() ;
        gDiceValue=qrand() ; // 获取随机数
        gDiceValue= (gDiceValue % 6) +1;
        gSeq++ ;
        gMutex.unlock() ;
        gNewdataAvailable.wakeAll(); //唤醒所有线程，有新数据了
        msleep(500); //线程休眠
    }
}

void ThreadProducer::stopThread()
{
    m_stop = true;
}

void ThreadConsumer::run()
{
    m_stop=false;

    while(!m_stop) //循环主体.
    {
        gMutex.lock();
        gNewdataAvailable.wait(&gMutex); //先解锁mutex，使其他线程可以使用mutex

        emit newValue(gSeq, gDiceValue) ;

        gMutex.unlock() ;
    }
}

void ThreadConsumer::stopThread()
{
    m_stop = true;
}
